iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Security

picoCTF 刷題分享系列 第 17

picoCTF 刷題分享---Day 17(刷題去)

  • 分享至 

  • xImage
  •  

我看著我刷過的題,感覺到了滿滿的成就感阿,好爽,那我們就繼續開始吧


題目:vault-door-1
解題思路:

  • 這題不難只是麻煩
  • 打開檔案會看到
  • 他對UserInput進行.substring("picoCTF{".length(),userInput.length()-1)
  • 並存入input中
  • 這段代表他把picoCTF{}這個格式去掉了
  • 並且只保留flag.content
  • 再進入checkPassword()判斷是否相等
  • 所以就只要把每一個字按造順序乖乖地打出來即可
  • 旗幟:picoCTF{d35cr4mbl3_tH3_cH4r4cT3r5_XXXXXX}
  • (一個一個打太麻煩了,給你們找幾個練練就好,不要浪費時間

題目:vault-door-3
不知道為什麼我找不到2(所以跳過吧
解題思路:

  • 這題有趣了點
  • 首先重點在checkPassword裡面
  • 可以分為4部分(4個迴圈,在這裡啟始是1,所以才會出現32
      1. 1~8位
      1. 9~16位
      1. 17~32位偶數位
      1. 16~31位奇數位
  • 這樣看可能不清楚,所以我換成程式的寫法再一遍
      1. [0:7:1]
      1. [15:8:-1]
      1. [30:14:-2]
      1. [17:31:2]
  • 簡單來說這題蠻考你的逆向基礎的
  • 他先對password做加密,並把結果存在buffer裡
  • 先把他經過加密的buffer結果貼上來:
    https://ithelp.ithome.com.tw/upload/images/20240928/20164155rJ7YkMC3Dh.png
  • 在這裡我的逆向過程是
  • 目前flag = {XXXXXXXX,XXXXXXXX,XXXXXXXX,XXXXXXXX}(逗號方便定位,並不是答案
  • 先解決第一部分
    https://ithelp.ithome.com.tw/upload/images/20240928/20164155EH20zEY8Th.png
    • 把前八位得到(我觀察過了後面不會影響到前面
    • 所以根據以上的圖可知,他存入的就是真正的答案
    • 直接填入(所以目前的flag為
    • flag = {jU5t_a_s,XXXXXXXX,XXXXXXXX,XXXXXXXX}
  • 來到第二部分
    https://ithelp.ithome.com.tw/upload/images/20240928/201641554Vw6mtTH8R.png
    • 他寫了個 buffer[i] = password.charAt(23-i)
    • 看一下i的範圍為8~15所以(23-i)的範圍就是15~8,且i=i+1(一次一位
    • 所以可以得知他加密的方法就是把8~15位的password反過來並存入
    • 所以再反一遍就可以變回原樣("na_3lpm1".reverse())
    • flag = {jU5t_a_s,1mpl3_an,XXXXXXXX,XXXXXXXX}
  • 第三部分的話,下集待續(沒
    https://ithelp.ithome.com.tw/upload/images/20240928/201641554XIP2n4Fcw.png
    • 他把buffer[i] = password.charAt(46-i);
    • 這樣其實一樣是反著存只要注意它是從第幾位存到第幾位就沒難度了
    • i從16~30(因為i<32),所以(46-i)就是從30~16每隔兩格存一次
    • 所以flag = {jU5t_a_s,1mpl3_an,4XrXmX4X,uX1XbX8X}
    • (粗體的8是我開頭的地方)
  • 最後的第四部分
    https://ithelp.ithome.com.tw/upload/images/20240928/20164155VK27purxCT.png
  • 這其實也不難看懂就是從第31位存到第17位
  • 直接存入
  • 所以把剩下的空格對應位置即可得到完整的flag
  • flag = {jU5t_a_s,1mpl3_an,4gr4m_4_,u_1fb380}
  • 再把逗號拿掉即可得到真正的flag
  • flag = {jU5t_a_s1mpl3_an4gr4m_4_u_1fb380}
  • 格式:picoCTF{flag.content}

後記:
這題我自己寫的時候其實不難,很快就解決了,但我要把想法寫出來反而花了一兩倍的時間,因為我要完全的了解自己在想什麼(平常動的不是自己的腦?),如果有沒看得懂可以寄gmail給我,我都會回的喔(如果有看到啦,還有好多篇阿,這日子什麼時候是個頭啊(🫠🫠但又有點好玩欸


上一篇
picoCTF 刷題分享---Day 16(刷題去)
下一篇
picoCTF 刷題分享---Day 18(刷題去)
系列文
picoCTF 刷題分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言